import { defineStore } from 'pinia'
import { ref } from 'vue'
// 引入接口
import { loginAPI } from '@/apis/user/index'
import { mergeCartAPI } from '@/apis/cart/index'
import { useCartStore } from './cateStore'

// 导航列表的数据管理
export const useUserStore = defineStore(
  'user',
  () => {
    const cartStore = useCartStore()
    // 1.定义管理用户数据的state
    let userInfo = ref({})
    // 2.定义获取接口数据的action函数
    const getUserInfo = async (data: any) => {
      let res = await loginAPI(data)
      if (res.code === '1') {
        userInfo.value = res.result
        // 合并购物车的操作
        await mergeCartAPI(
          cartStore.cartList.map((item) => {
            return {
              skuId: item.skuId,
              selected: item.selected,
              count: item.count,
            }
          }),
        )
        cartStore.updateNewlist() // 更新购物车数据
      }
    }
    // 清除用户数据
    const clearUserInfo = () => {
      userInfo.value = {}
      // 调用cartStore中的清除购物车数据的方法
      cartStore.clearCart()
    }
    // 3.以对象的形式把state和action return出去
    return {
      userInfo,
      getUserInfo,
      clearUserInfo,
    }
  },
  {
    persist: true,
  },
)
